<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MNNKit: MNN::Express::Executor Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">MNNKit
   &#160;<span id="projectnumber">1.0</span>
   </div>
   <div id="projectbrief">MNN Kit SDK</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespace_m_n_n.html">MNN</a></li><li class="navelem"><a class="el" href="namespace_m_n_n_1_1_express.html">Express</a></li><li class="navelem"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html">Executor</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_m_n_n_1_1_express_1_1_executor-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MNN::Express::Executor Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="_executor_8hpp_source.html">Executor.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">ComputeCache</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_requirement.html">Requirement</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a2eefc03f52558051e9d9e9d02adab0c6"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6">GCFlag</a> { <a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6a8f4146467fbff72c4b715a70b9915f49">FULL</a>, 
<a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6a2b74c0db0caf520e8e8ad816345f30a0">PART</a>
 }</td></tr>
<tr class="separator:a2eefc03f52558051e9d9e9d02adab0c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:abb8a45e6a8c2aec8ebd61a0104f1079d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#abb8a45e6a8c2aec8ebd61a0104f1079d">~Executor</a> ()</td></tr>
<tr class="separator:abb8a45e6a8c2aec8ebd61a0104f1079d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96afea2d0ab5bdc58897f87d7244ed46"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_requirement.html">Requirement</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a96afea2d0ab5bdc58897f87d7244ed46">getRequirement</a> (<a class="el" href="class_m_n_n_1_1_express_1_1_expr.html">Expr</a> *expr) const</td></tr>
<tr class="separator:a96afea2d0ab5bdc58897f87d7244ed46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae42f785e9a2666eb08657b8cff103a49"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespace_m_n_n.html#a6814f7688a6a1ba4245f3ec5f4773241">ErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#ae42f785e9a2666eb08657b8cff103a49">computeInfo</a> (<a class="el" href="class_m_n_n_1_1_express_1_1_expr.html">Expr</a> *expr)</td></tr>
<tr class="separator:ae42f785e9a2666eb08657b8cff103a49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa87961b23fe894274838890ca9ae15cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#aa87961b23fe894274838890ca9ae15cb">makeCache</a> (std::vector&lt; <a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a> &gt; expr)</td></tr>
<tr class="separator:aa87961b23fe894274838890ca9ae15cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cdc43da6327fc21fea1d16fee66d774"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespace_m_n_n.html#a6814f7688a6a1ba4245f3ec5f4773241">ErrorCode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2cdc43da6327fc21fea1d16fee66d774">runCache</a> (std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">ComputeCache</a> &gt; cache)</td></tr>
<tr class="separator:a2cdc43da6327fc21fea1d16fee66d774"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6205ca19fdca58aed82c953b3984784"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#af6205ca19fdca58aed82c953b3984784">setGlobalExecutorConfig</a> (<a class="el" href="_m_n_n_forward_type_8h.html#ab63ddb976d555083197683a1b1940870">MNNForwardType</a> type, const BackendConfig &amp;config, int numberThread)</td></tr>
<tr class="separator:af6205ca19fdca58aed82c953b3984784"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa610c8ec15dac28f587d626dccf33be8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#aa610c8ec15dac28f587d626dccf33be8">gc</a> (<a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6">GCFlag</a> flag=<a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6a8f4146467fbff72c4b715a70b9915f49">FULL</a>)</td></tr>
<tr class="separator:aa610c8ec15dac28f587d626dccf33be8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a2ee9e5c56345237d2f4933418a5d04"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a4a2ee9e5c56345237d2f4933418a5d04">resetProfile</a> ()</td></tr>
<tr class="separator:a4a2ee9e5c56345237d2f4933418a5d04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7e71bba8d1e31ba891506f57b1c549b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#ae7e71bba8d1e31ba891506f57b1c549b">dumpProfile</a> ()</td></tr>
<tr class="separator:ae7e71bba8d1e31ba891506f57b1c549b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b1f0f69ffb1e567bacc909cc4760282"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a8b1f0f69ffb1e567bacc909cc4760282">addOpCostTime</a> (int op, float costTime)</td></tr>
<tr class="separator:a8b1f0f69ffb1e567bacc909cc4760282"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a87988e119f5bfe95667ae91308fd9e20"><td class="memItemLeft" align="right" valign="top">static std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor.html">Executor</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a87988e119f5bfe95667ae91308fd9e20">getGlobalExecutor</a> ()</td></tr>
<tr class="separator:a87988e119f5bfe95667ae91308fd9e20"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a9063b5779c6968d5dd90f5f79b5b4da9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a9063b5779c6968d5dd90f5f79b5b4da9">_addToCache</a> (const std::vector&lt; std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">ComputeCache</a> &gt;&gt; &amp;caches)</td></tr>
<tr class="separator:a9063b5779c6968d5dd90f5f79b5b4da9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2a3efb3188ebdaf2dc666a2b98a690f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#aa2a3efb3188ebdaf2dc666a2b98a690f">_resetCache</a> ()</td></tr>
<tr class="separator:aa2a3efb3188ebdaf2dc666a2b98a690f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be83caf7211024d57e573dd4cab9179"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a5be83caf7211024d57e573dd4cab9179">_visit</a> (<a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a> expr, std::map&lt; <a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a>, <a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_compute_cache_1_1_unit.html">ComputeCache::Unit</a> &gt; &amp;units, std::set&lt; std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">Executor::ComputeCache</a> &gt;&gt; &amp;inputCaches, std::vector&lt; <a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_compute_cache_1_1_tensor_content.html">ComputeCache::TensorContent</a> &gt; &amp;tensors)</td></tr>
<tr class="separator:a5be83caf7211024d57e573dd4cab9179"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d710dafa2e503ec7ca3ba6fdb462012"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a6d710dafa2e503ec7ca3ba6fdb462012">Executor</a> (std::shared_ptr&lt; Backend &gt; backend)</td></tr>
<tr class="separator:a6d710dafa2e503ec7ca3ba6fdb462012"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a9d1bde34f7f5e80caf9bbf478e6e1d34"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; Backend &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a9d1bde34f7f5e80caf9bbf478e6e1d34">mBackend</a></td></tr>
<tr class="separator:a9d1bde34f7f5e80caf9bbf478e6e1d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a957abb59be21f14666b255e1dcf2e235"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; Backend &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a957abb59be21f14666b255e1dcf2e235">mBackupBackend</a></td></tr>
<tr class="separator:a957abb59be21f14666b255e1dcf2e235"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a801194aa6479649ce7936583fd10d109"><td class="memItemLeft" align="right" valign="top">std::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a801194aa6479649ce7936583fd10d109">mMutex</a></td></tr>
<tr class="separator:a801194aa6479649ce7936583fd10d109"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95ff5f816017c2d568db8dc4f53d8d7d"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a95ff5f816017c2d568db8dc4f53d8d7d">mStack</a></td></tr>
<tr class="separator:a95ff5f816017c2d568db8dc4f53d8d7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a67a93b8171bd826e4a4cf672dbb6bf09"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a67a93b8171bd826e4a4cf672dbb6bf09">mInputs</a></td></tr>
<tr class="separator:a67a93b8171bd826e4a4cf672dbb6bf09"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af108a942d19862cb51ee774f625db366"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#af108a942d19862cb51ee774f625db366">mOutputs</a></td></tr>
<tr class="separator:af108a942d19862cb51ee774f625db366"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8816dd9b3c5da79495100f8aa35e0807"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; Profiler &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a8816dd9b3c5da79495100f8aa35e0807">mProfiler</a></td></tr>
<tr class="separator:a8816dd9b3c5da79495100f8aa35e0807"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="a2eefc03f52558051e9d9e9d02adab0c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eefc03f52558051e9d9e9d02adab0c6">&#9670;&nbsp;</a></span>GCFlag</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6">MNN::Express::Executor::GCFlag</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a2eefc03f52558051e9d9e9d02adab0c6a8f4146467fbff72c4b715a70b9915f49"></a>FULL&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="a2eefc03f52558051e9d9e9d02adab0c6a2b74c0db0caf520e8e8ad816345f30a0"></a>PART&#160;</td><td class="fielddoc"></td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="abb8a45e6a8c2aec8ebd61a0104f1079d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb8a45e6a8c2aec8ebd61a0104f1079d">&#9670;&nbsp;</a></span>~Executor()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">MNN::Express::Executor::~Executor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a6d710dafa2e503ec7ca3ba6fdb462012"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d710dafa2e503ec7ca3ba6fdb462012">&#9670;&nbsp;</a></span>Executor()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MNN::Express::Executor::Executor </td>
          <td>(</td>
          <td class="paramtype">std::shared_ptr&lt; Backend &gt;&#160;</td>
          <td class="paramname"><em>backend</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a9063b5779c6968d5dd90f5f79b5b4da9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9063b5779c6968d5dd90f5f79b5b4da9">&#9670;&nbsp;</a></span>_addToCache()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::_addToCache </td>
          <td>(</td>
          <td class="paramtype">const std::vector&lt; std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">ComputeCache</a> &gt;&gt; &amp;&#160;</td>
          <td class="paramname"><em>caches</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aa2a3efb3188ebdaf2dc666a2b98a690f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2a3efb3188ebdaf2dc666a2b98a690f">&#9670;&nbsp;</a></span>_resetCache()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::_resetCache </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a5be83caf7211024d57e573dd4cab9179"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5be83caf7211024d57e573dd4cab9179">&#9670;&nbsp;</a></span>_visit()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::_visit </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a>&#160;</td>
          <td class="paramname"><em>expr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::map&lt; <a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a>, <a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_compute_cache_1_1_unit.html">ComputeCache::Unit</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>units</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::set&lt; std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">Executor::ComputeCache</a> &gt;&gt; &amp;&#160;</td>
          <td class="paramname"><em>inputCaches</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::vector&lt; <a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_compute_cache_1_1_tensor_content.html">ComputeCache::TensorContent</a> &gt; &amp;&#160;</td>
          <td class="paramname"><em>tensors</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8b1f0f69ffb1e567bacc909cc4760282"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b1f0f69ffb1e567bacc909cc4760282">&#9670;&nbsp;</a></span>addOpCostTime()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::addOpCostTime </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>op</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>costTime</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae42f785e9a2666eb08657b8cff103a49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae42f785e9a2666eb08657b8cff103a49">&#9670;&nbsp;</a></span>computeInfo()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespace_m_n_n.html#a6814f7688a6a1ba4245f3ec5f4773241">ErrorCode</a> MNN::Express::Executor::computeInfo </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_m_n_n_1_1_express_1_1_expr.html">Expr</a> *&#160;</td>
          <td class="paramname"><em>expr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae7e71bba8d1e31ba891506f57b1c549b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7e71bba8d1e31ba891506f57b1c549b">&#9670;&nbsp;</a></span>dumpProfile()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::dumpProfile </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa610c8ec15dac28f587d626dccf33be8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa610c8ec15dac28f587d626dccf33be8">&#9670;&nbsp;</a></span>gc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::gc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6">GCFlag</a>&#160;</td>
          <td class="paramname"><em>flag</em> = <code><a class="el" href="class_m_n_n_1_1_express_1_1_executor.html#a2eefc03f52558051e9d9e9d02adab0c6a8f4146467fbff72c4b715a70b9915f49">FULL</a></code></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a87988e119f5bfe95667ae91308fd9e20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a87988e119f5bfe95667ae91308fd9e20">&#9670;&nbsp;</a></span>getGlobalExecutor()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static std::shared_ptr&lt;<a class="el" href="class_m_n_n_1_1_express_1_1_executor.html">Executor</a>&gt; MNN::Express::Executor::getGlobalExecutor </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a96afea2d0ab5bdc58897f87d7244ed46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96afea2d0ab5bdc58897f87d7244ed46">&#9670;&nbsp;</a></span>getRequirement()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct_m_n_n_1_1_express_1_1_executor_1_1_requirement.html">Requirement</a> MNN::Express::Executor::getRequirement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_m_n_n_1_1_express_1_1_expr.html">Expr</a> *&#160;</td>
          <td class="paramname"><em>expr</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa87961b23fe894274838890ca9ae15cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa87961b23fe894274838890ca9ae15cb">&#9670;&nbsp;</a></span>makeCache()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::makeCache </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; <a class="el" href="namespace_m_n_n_1_1_express.html#a152ce5be99dce88bb7ede3838075df79">EXPRP</a> &gt;&#160;</td>
          <td class="paramname"><em>expr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4a2ee9e5c56345237d2f4933418a5d04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a2ee9e5c56345237d2f4933418a5d04">&#9670;&nbsp;</a></span>resetProfile()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::resetProfile </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a2cdc43da6327fc21fea1d16fee66d774"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2cdc43da6327fc21fea1d16fee66d774">&#9670;&nbsp;</a></span>runCache()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespace_m_n_n.html#a6814f7688a6a1ba4245f3ec5f4773241">ErrorCode</a> MNN::Express::Executor::runCache </td>
          <td>(</td>
          <td class="paramtype">std::shared_ptr&lt; <a class="el" href="class_m_n_n_1_1_express_1_1_executor_1_1_compute_cache.html">ComputeCache</a> &gt;&#160;</td>
          <td class="paramname"><em>cache</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="af6205ca19fdca58aed82c953b3984784"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af6205ca19fdca58aed82c953b3984784">&#9670;&nbsp;</a></span>setGlobalExecutorConfig()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void MNN::Express::Executor::setGlobalExecutorConfig </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="_m_n_n_forward_type_8h.html#ab63ddb976d555083197683a1b1940870">MNNForwardType</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const BackendConfig &amp;&#160;</td>
          <td class="paramname"><em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>numberThread</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a9d1bde34f7f5e80caf9bbf478e6e1d34"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d1bde34f7f5e80caf9bbf478e6e1d34">&#9670;&nbsp;</a></span>mBackend</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt;Backend&gt; MNN::Express::Executor::mBackend</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a957abb59be21f14666b255e1dcf2e235"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a957abb59be21f14666b255e1dcf2e235">&#9670;&nbsp;</a></span>mBackupBackend</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt;Backend&gt; MNN::Express::Executor::mBackupBackend</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a67a93b8171bd826e4a4cf672dbb6bf09"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a67a93b8171bd826e4a4cf672dbb6bf09">&#9670;&nbsp;</a></span>mInputs</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a>*&gt; MNN::Express::Executor::mInputs</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a801194aa6479649ce7936583fd10d109"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a801194aa6479649ce7936583fd10d109">&#9670;&nbsp;</a></span>mMutex</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::mutex MNN::Express::Executor::mMutex</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af108a942d19862cb51ee774f625db366"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af108a942d19862cb51ee774f625db366">&#9670;&nbsp;</a></span>mOutputs</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a>*&gt; MNN::Express::Executor::mOutputs</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8816dd9b3c5da79495100f8aa35e0807"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8816dd9b3c5da79495100f8aa35e0807">&#9670;&nbsp;</a></span>mProfiler</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::shared_ptr&lt;Profiler&gt; MNN::Express::Executor::mProfiler</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a95ff5f816017c2d568db8dc4f53d8d7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95ff5f816017c2d568db8dc4f53d8d7d">&#9670;&nbsp;</a></span>mStack</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;std::shared_ptr&lt;<a class="el" href="class_m_n_n_1_1_tensor.html">Tensor</a>&gt; &gt; MNN::Express::Executor::mStack</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>MNNFaceDetection/iOS/MNNFaceDetection/Pods/MNN/MNN.framework/Headers/expr/expr/<a class="el" href="_executor_8hpp_source.html">Executor.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>
